import { defineStore } from 'pinia'
import { countUnreadNotifications, getUnreadNotifications, markAllNotificationsAsRead } from '@/api/notification'
//定义一个名为 notification 的 Store，用于集中管理通知相关的状态和操作。
export const useNotificationStore = defineStore('notification', {
  state: () => ({
    unreadCount: 0,
    unreadNotifications: []
  }),

  //用于更新全局的未读通知数量；
  actions: {
    async fetchUnreadCount() {
      try {
        const count = await countUnreadNotifications()
        this.unreadCount = count
        return count
      } catch (error) {
        return 0
      }
    },
    
    async fetchUnreadNotifications() {
      try {
        const notifications = await getUnreadNotifications()
        this.unreadNotifications = notifications
        return notifications
      } catch (error) {
        return []
      }
    },
    
    async markAllAsRead() {
      try {
        await markAllNotificationsAsRead()
        this.unreadCount = 0
        this.unreadNotifications = []
      } catch (error) {
        return false
      }
    },
    
    decrementUnreadCount() {
      if (this.unreadCount > 0) {
        this.unreadCount--
      }
    }
  }
})
//Store 的整体作用
// useNotificationStore Store 的整体作用可以总结为：
//
// 集中管理通知相关的状态和操作，包括：
//
// 跟踪未读通知的数量（unreadCount）；
// 存储未读通知的详细列表（unreadNotifications）；
// 提供方法从后端获取未读通知的数量和列表（fetchUnreadCount、fetchUnreadNotifications）；
// 提供方法将所有通知标记为已读（markAllAsRead）；
// 提供方法手动减少未读通知的数量（decrementUnreadCount）。